package br.com.sebrae.pr.sgp.services;

import java.util.List;

import javax.ejb.Remote;

import br.com.sebrae.pr.sgp.entities.Usuario;
import br.com.sebrae.pr.sgp.util.MD5;

/**
 * Interface remota de serviço para a entidade {@link Usuario} e seus fluxos.
 * 
 * @author Tanimoto
 * 
 */
@Remote
public interface UsuarioServiceRemote {

    /**
     * Pesquisa os usuarios utilizando os campos do {@link Usuario} parâmetro como filtros. Utiliza LIKE.
     * 
     * @param usuario
     * @return
     */
    public List<Usuario> efetuarPesquisa(final Usuario usuario);

    /**
     * Pesquisa o {@link Usuario} com dado nmeLogin
     * 
     * @param nmeLogin
     * @return
     */
    public Usuario pesquisarPorLogin(final String nmeLogin);

    /**
     * Pesquisa o {@link Usuario} com dado login e senha (MD5)
     * 
     * @see MD5
     * 
     * @param nmeLogin
     * @param desSenhaMd5
     * @return
     */
    public Usuario pesquisarPorLoginSenha(final String nmeLogin, final String desSenhaMd5);

    /**
     * Deve gerar uma nova senha, alterar o usuario setando a nova senha e enviar um email para o {@link Usuario#getDesEmail()} com a nova
     * senha gerada
     * 
     * @param usuario
     * @return
     */
    public Usuario esqueciSenha(final Usuario usuario);

    /**
     * Salva ou atualiza determinado {@link Usuario}
     * 
     * @param usuario
     * @return
     */
    public Usuario salvarOuAtualizar(final Usuario usuario);


}
